/**
 *
 */
package cn.aresoft.excel.annotation;


import cn.aresoft.excel.emuns.Direction;
import cn.aresoft.excel.emuns.ExcelDataFormat;
import cn.aresoft.excel.handle.ISelfValueHandler;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Excel注解定义
 * @author yangfeng
 * @version 2016-03-10
 */
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelField {


	/**
	 * 导出字段标题
	 */
	String title();

	/**
	 * 宽度
	 */
	int width() default 200;

	/**
	 * 导出字段字段排序（升序）
	 */
	int sort() default 0;

	/**
	 * 如果是字典类型，请设置字典的type值
	 */
	String dictType() default "";


	/**字典表*/
	String dictTable() default "";


	/**字典项说明*/
	String dicText() default "";

	/**
	 * 导出的日期类型格式
	 * @return
	 */
	ExcelDataFormat dataForm()  default ExcelDataFormat.TEXT;		//默认是文本格式

	/**
	 * 数据必填（默认不必填）
	 * @return
	 */
	boolean required() default false;

	/**
	 * 数据流向：Direction.inout导入、导出，Direction.in仅导入、Direction.out仅导出
	 */
	Direction direction() default Direction.inout;

	/**
	 * 简单字典类型，{key-value,key-value}
	 */
	String[]  replacement() default {};

	/**
	 * 数据列是否折叠（通常用于隐藏主键类字段，进行修改导入）
	 * @return
	 */
	boolean collapsed() default false;

	/**分组名称*/
	String groupName() default "";


	/**是否为动态导出列，字段类型必须为集合List类型*/
	boolean isWrapField() default false;

	/**
	 * 自定义字段的值转换器（实现ISelfValueHandler接口）
	 */
	Class<?extends ISelfValueHandler> selfHandler() default ISelfValueHandler.class;


}
